/*******************************************************************************
*
* (c) Copyright 2014 Freescale Semiconductor
*
****************************************************************************//*!
*
* @file     SIM.h
*
* @author   Salvador Zendejas
*
* @version  0.0.1
*
* @date      Aug 22, 2014
*
* @brief    System Integration Module configuration for Kinetis K.
*
*******************************************************************************/
#ifndef TASKSCHEDULER_H_
#define TASKSCHEDULER_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "derivative.h" /* Include peripheral declarations */
#include "../typedef.h"
#include "Tasks.h"

/*******************************************************************************
* Constants and macros
*******************************************************************************/
#define TIME_SLICE_DEFAULT	TICKs_10MS
#define STKALIGN	11
#define ReadREG(var, REG)	register uint32_t var asm(REG)
/*******************************************************************************
* Types Definitions
*******************************************************************************/

extern uint32_t u32StackAllocated[1024];
extern uint32_t *u32StackAllocatedptr;
/*******************************************************************************
* Global function prototypes
*******************************************************************************/
void vfn_TaskScheduler_Init(void);
void vfn_TaskScheduler_Start(void);
eStatusFn vfn_TaskCreate(uint32_t *AddressFn, eID_Task_t ID_Task, uint16_t StackSize, uint8_t *u8NameFn);
void vfn_TaskActivate(eID_Task_t ID_Task);
void vfn_TaskTerminate(eID_Task_t ID_Task);

void vfn_SysTick_INIT(void);
void vfn_SysTick_ISR_Cfg(uint32_t u32ReloadValue);
void SysTick_Handler(void);

/*******************************************************************************
* Local function prototypes
*******************************************************************************/


#endif /* TASKSCHEDULER_H_ */
